home *** CD-ROM | disk | FTP | other *** search
/ The Illustrated Works of Shakespeare / Illustrated Works of Shakespeare, The (1990)(Animated Pixels)[!][CDTV-PC].iso / shakes / code / shakespeare.amos / shakespeare.amosSourceCode < prev    next >
AMOS Source Code  |  1991-04-10  |  60KB  |  2,009 lines

  1. Set Buffer 40
  2. Rem *************************************
  3. Rem * The Complete Works Of Shakespeare *
  4. Rem * (C)1991 Animated pixels Ltd.      *
  5. Rem * Written By Darren Lines.          *
  6. Rem *************************************
  7. On Error Proc AN_ERROR
  8. Hide 
  9. Screen Open 6,320,288,32,Lowres : Screen Hide 6 : Screen 6 : Cls 0
  10. Curs Off : Flash Off : Auto View Off 
  11. Load Iff "Ap:Shakes/Graphics/Loader-title1",0
  12. Screen Hide 0 : Screen Copy 0,0,0,320,256 To 6,0,0
  13. Screen Display 6,128,35,320,288 : Screen 6 : Get Palette 0
  14. Screen Close 0 : Screen Show 6 : Auto View On 
  15. Rem *************
  16. Rem * Variables *
  17. Rem *************
  18. Dim BOOKMARKS(10) : Dim T$(5) : Dim NUMERAL$(99)
  19. Dim MARK$(7) : Dim MARK(7) : Dim ICON_INF$(9) : Dim INDEX$(30)
  20. Dim MACH$(100) : Dim FO$(50) : Dim CHAPTER(160) : Dim SEL$(50)
  21. Dim _POF(2500)
  22. Global _POF(),LAST_M_KEY,LAST_ACT$,K_KEY$,LAST_KEY$
  23. Global INDX,INDX_MAX,BUTTON,X,Y,FILE$,TXT_ARRAY_LEN,A,SEL$()
  24. Global M_X,M_Y,SHELF_OFFSET,TX,T$(),S_BOOK,FLAG,NUM_TYPE,INDEX$()
  25. Global ACT,ABOOK,FLG_EXIT,CHAP_POINTER,CHAP_POINTER_MAX
  26. Global SEL,SEL1,MARK$(),MARK(),ACT$,ICON_INF$(),A$
  27. Global ICONS_Y,SHELF_Y,SEARCH_FLG,SEARCH$,TEMP_FILE_POINTER
  28. Global BOOKMARKS(),NUMERAL$(),M_KEY,XT,YT,SND_FLAG,WORD
  29. Global PNUM,VERSE$,BOOK,CHAPTER,VERSE,TEMP_ACT$,CHAPTER()
  30. Global PIC_NUM,PIC_NUM_STR$,ICON_OFFSET,TEMP,FLAG_EXIT,FSIZE,NEW_FLG
  31. Global F_POINTER,FILE_POINTER,X,Y,MOST_Y,MOST_DIFF,NO_CLEAR
  32. Global TP_Y_AMOUNT,NEW_TP_Y_AMOUNT,BT_Y_AMOUNT,NEW_BT_Y_AMOUNT,PAGE_SIZE
  33. Global FLAG_NEW_FILE,TITLE$,SCR_H,FACE,INFO$,SCR_FLAG,OLD_ACT$,CHAP_POINTER
  34. Global FACE_OFFSET,SCR_HEIGHT,FACE_NAME$,OLD_S_BOOK,FLG_DIR,TEMP_SEL,TEMP_P
  35. Global DRECTORY$,DRECTORY1$,HILIGHT$,JSTICK,X_M,Y_M,BACK_SCREEN,SCR_FLG,FLG_TEXT
  36. Global MACH$(),REENTER_TEMP$,REENTER_F$,REENTER_COUNT1,REENTER_COUNT
  37. Global REENTER_FLG,S_COUNT,TITLE1$,FIL$,REENTER_F_WORD$,REENTER_F_WORD1$
  38. Global FO$(),FO_MAX,FO,FO1,PAL,CHAP_MAX,Z$,P$,SX,TX,DEMO_FLG,BOOK$
  39. Global BUFFER_LEN,BUFFER_ADDR,STRING_ADDR,BUFFER_SIZE,PIC_FLG,CHAP_X
  40. Pload "Ap:Assembler/Code/Amos_Match",6 : Set Envel 1,0 To 2,63
  41. Proc VAR_SETUP
  42. Proc SETUP : Proc FIRST_LOAD
  43. Rem *************
  44. Rem * MAIN LOOP *
  45. Rem *************
  46. Sprite 9,128+160-10,250-20-(43*PAL)+20,1
  47. Proc MOUSE_CONVERT
  48. Repeat 
  49.    Proc MOUSE_CONVERT
  50.    SCR_FLG=0
  51.    If(M_KEY and 1)=1 Then Proc SCR_TEXT_DOWN
  52.    If(M_KEY and 2)=2 Then Proc SCR_TEXT_UP
  53.    If(M_KEY and 4)=4 Then Proc ICON_LEFT
  54.    If(M_KEY and 8)=8 Then Proc ICON_RIGHT
  55.    If(M_KEY and 16)=16
  56.       Sprite 9,128+160-10,250-20-(43*PAL)+20,2
  57.       CHECK_ICON_A
  58.       Sprite 9,128+160-10,250-20-(43*PAL)+20,1
  59.    End If 
  60.    If(M_KEY and 32)=32
  61.       Sprite 9,128+160-10,250-20-(43*PAL)+20,2
  62.       CHECK_ICON_B
  63.       Sprite 9,128+160-10,250-20-(43*PAL)+20,1
  64.    End If 
  65.    K$=Inkey$
  66.    If(M_KEY and $40)
  67.       Proc CHECK_ICON1
  68.       Sprite 9,128+160-10,250-20-(43*PAL)+20,1
  69.    End If 
  70.    If(M_KEY and $80)
  71.       Sprite 9,,,2
  72.       Proc SEARCH_REENTER
  73.       Sprite 9,128+160-10,250-20-(43*PAL)+20,1
  74.    End If 
  75. Until 0
  76. Show 
  77. End 
  78. Procedure MOUSE_CONVERT
  79.    X Mouse=288
  80.    Y Mouse=250-(43*PAL)
  81.    M_KEY=0
  82.    OLD_TIMER=Timer
  83.    Repeat 
  84.       XT=X Mouse
  85.       YT=Y Mouse
  86.       If YT<250-(43*PAL) Then M_KEY=(M_KEY or 1)
  87.       If YT>250-(43*PAL) Then M_KEY=(M_KEY or 2)
  88.       If XT<288 Then M_KEY=(M_KEY or 4)
  89.       If XT>288 Then M_KEY=(M_KEY or 8)
  90.       K_KEY$=Inkey$
  91.       If Key State($4C) Then M_KEY=(M_KEY or 1)
  92.       If Key State($4D) Then M_KEY=(M_KEY or 2)
  93.       If Key State($4F) Then M_KEY=(M_KEY or 4)
  94.       If Key State($4E) Then M_KEY=(M_KEY or 8)
  95.       If Key State($50) Then M_KEY=(M_KEY or 16)
  96.       If Key State($51) Then M_KEY=(M_KEY or 32)
  97.       If Key State($45) or Key State(95) Then M_KEY=(M_KEY or 64)
  98.       If Key State($43) Then M_KEY=(M_KEY or 128)
  99.       M_KEY=M_KEY or(Mouse Key*16)
  100.       JJJ=Joy(1)
  101.       M_KEY=M_KEY or JJJ
  102.    Until M_KEY<>0 or NO_REPEAT_FLG=1 or(Timer>OLD_TIMER+4) or(K_KEY$<>"")
  103.    If(M_KEY and $FF)<>0 and SND_FLAG=0 and(LAST_M_KEY<>M_KEY)
  104.       If JJJ=0
  105.          Play $F,50,0
  106.       Else 
  107.          Play $F,30,0
  108.       End If 
  109.    End If 
  110.    LAST_M_KEY=M_KEY : LAST_KEY$=K_KEY$
  111. End Proc
  112. Procedure VAR_SETUP
  113.    Open In 7,"ap:Shakes/Code/Fonts.Dat"
  114.    A=1 : Repeat : XXX=Free : Line Input #7,FO$(A) : Inc A : Until Eof(7) or(A>50) : Close 7
  115.    FO_MAX=A-1
  116.    FACE_OFFSET=0 : FLAG_NEW_FILE=0 : FILE_POINTER=0
  117.    F_POINTER=0 : BOOK=2 : PNUM=1 : FO=18 : FLAG_EXIT=0 : FACE_FLG=1
  118.    SOUND=0 : SEARCH_FLG=1 : BUTTON=0 : TXT_ARRAY_LEN=20
  119.    SHELF_OFFSET=0 : TX=1 : T$="" : SEL=1 : SEL1=1 : CHAP_POINTER=1
  120.    JSTICK=1 : BACK_SCREEN=1023 : SCR_FLG=0 : FLG_TEXT=0
  121.    REENTER_TEMP$="" : REENTER_FLG=0 : NUM_TYPE=0
  122.    TEMP=8 : BUFFER_LEN=103964 : BUFFER_SIZE=0 : DEMO_FLG=0
  123.    Hide : Curs Off : Bob Update Off 
  124.    FO1=21 : If Ntsc Then PAL=1 Else PAL=0
  125.    Set Input 10,-1
  126.    Channel 0 To Sprite 9
  127.    Anim 0,"(6,10)(7,10)(8,10)(9,10)(10,10)L"
  128. End Proc
  129. Procedure SETUP
  130.    PIC_NUM=1
  131.    SCR_H=186
  132.    ICONS_Y=218-(43*PAL)+5
  133.    ICON_OFFSET=0
  134.    Auto View Off 
  135.    Screen Open 0,640,SCR_H+23,16,Hires : Rem scroll 
  136.    Screen Open 1,320,256,16,Lowres : Rem pici 
  137.    Screen Open 2,13*72,70,32,Lowres : Rem icons
  138.    Screen Open 3,640,256,32,Lowres : Rem temp 
  139.    Screen Display 0,128,35,640,SCR_H-(43*PAL) : Rem SCROLL 
  140.    Screen Display 2,128,ICONS_Y,320,70 : Rem ICONS
  141.    For A=0 To 3 : Screen A : Flash Off : Curs Off : Next A
  142.    Screen Hide 3 : Screen To Front 6
  143.    Rem ************** 
  144.    Rem * Load Icons * 
  145.    Rem ************** 
  146.    Load Iff "ap:Shakes/Graphics/icons",3
  147.    Screen To Front 6
  148.    Screen Copy 3,0,0,74*4,71 To 2,0,0
  149.    Screen Copy 3,0,71,72*4,71*2 To 2,(72*4),0
  150.    Screen Copy 3,0,71*2,72*4,71*3 To 2,(72*8),0
  151.    Screen Copy 3,0,71*3,72*4,71*4 To 2,(72*12),0
  152.    Screen Copy 3,72*3,71*2,72*4,71*3 To 2,(75*11)+9,0
  153.    Screen 2
  154.    Get Palette 3 : Colour 17,$D97 : Colour 18,$D75 : Colour 19,$C54
  155.    Screen To Front 2
  156.    Screen Offset 2,TEMP,0
  157.    Screen To Front 6
  158.    Rem ***************
  159.    Rem * Load Scroll *
  160.    Rem ***************
  161.    If PAL=0
  162.       Load Iff "ap:Shakes/Graphics/scroll_hires",3
  163.    Else 
  164.       Load Iff "ap:Shakes/Graphics/scroll_hires_ntsc",3
  165.    End If 
  166.    Screen 3 : Curs Off 
  167.    Screen To Front 6
  168.    Screen Copy 3,0,0,640,SCR_H To 0,0,0
  169.    Screen Copy 0,0,1,640,21 To 0,0,SCR_H+1-(43*PAL)
  170.    Screen 0 : Get Palette 3 : Get Palette 2,$FFFF0000
  171.    Colour 14,$FFF : Colour 15,0
  172.    Screen 1 : Cls 0
  173.    Screen To Front 0 : Screen To Front 2 : Screen To Front 6
  174.    Auto View On 
  175.    Rem *********************
  176.    Rem * Create Icon Zones *  
  177.    Rem *********************
  178.    Screen 2
  179.    Reserve Zone 9
  180.    For Z=0 To 8
  181.       Set Zone Z+1,128+14+(72*Z),10 To 128+64+(72*Z),61
  182.    Next Z
  183.    Limit Mouse 128,54 To 446,290
  184. End Proc
  185. Procedure DISPLAY_A_PIC
  186.    F$=Str$(S_BOOK)-" " : If Len(F$)=1 Then F$="0"+F$
  187.    F$="Ap:Shakes/Pictures/"+F$+"/"+SEL$(SEL)+".Iff"
  188.    If Exist(F$)
  189.       Screen 0
  190.       PIC_FLG=1
  191.       Screen 1
  192.       Fade 2 : Wait 10
  193.       Load Iff F$,1
  194.       Screen Display 1,128,35,320,256-(43*PAL)
  195.       Screen To Back 1
  196.       If DEMO_FLG=0
  197.          Screen Show 1
  198.       Else 
  199.          Screen Hide 1
  200.       End If 
  201.    Else 
  202.       PIC_FLG=0
  203.       Screen 1
  204.       Cls 0
  205.    End If 
  206.    Screen Hide 1
  207. End Proc
  208. Procedure BUTTON_WAIT
  209.    NO_REPEAT_FLG=1
  210.    Repeat : MOUSE_CONVERT : Until(M_KEY and $70)=0
  211.    NO_REPEAT_FLG=0
  212. End Proc
  213. Procedure BUTTON_WAIT1
  214.    NO_REPEAT_FLG=1
  215.    Repeat : MOUSE_CONVERT : Until(M_KEY and $70)<>0
  216.    NO_REPEAT_FLG=0
  217. End Proc
  218. Procedure ICON_LEFT
  219.    If ICON_OFFSET=0 Then Pop Proc
  220.    For A=0 To 35/2
  221.       Add TEMP,-4
  222.       Screen Offset 2,TEMP,0 : Wait Vbl 
  223.    Next A
  224.    Dec ICON_OFFSET
  225. End Proc
  226. Procedure ICON_RIGHT
  227.    If ICON_OFFSET>7 Then Pop Proc
  228.    For A=0 To 35/2
  229.       Add TEMP,4
  230.       Screen Offset 2,TEMP,0 : Wait Vbl 
  231.    Next A
  232.    Inc ICON_OFFSET
  233. End Proc
  234. Procedure CHECK_ICON_A
  235.    Screen 2
  236.    Z=Mouse Zone
  237.    If Z=1 Then Proc UP_SCROLL
  238.    If Z=2 Then Proc CHAPTER_INC
  239.    If Z=3
  240.       Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  241.       Proc BOOK_LOAD
  242.    End If 
  243.    If Z=4 Then Proc PIC_SHOW
  244.    If Z=5 Then Proc SLIDE_SHOW
  245.    If Z=6
  246.       Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  247.       Proc BOOK_MARK
  248.    End If 
  249.    If Z=7
  250.       Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  251.       Proc SEARCH_TEXT
  252.    End If 
  253.    If Z=8 Then Proc FONTS_UP
  254.    If Z=9 Then Proc CHAPTER_VERSE
  255. End Proc
  256. Procedure CHECK_ICON_B
  257.    Screen 2
  258.    Z=Mouse Zone
  259.    If Z=1 Then Proc DWN_SCROLL
  260.    If Z=2 Then Proc CHAPTER_DEC
  261.    If Z=8 Then Proc FONTS_DOWN
  262. End Proc
  263. Procedure CHECK_ICON1
  264.    Screen 2 : Z=Mouse Zone
  265.    If Z<1 or Z>9 Then Pop Proc
  266.    Sprite Off 9
  267.    Screen Hide 0 : Screen Hide 4 : Screen Hide 2
  268.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  269.    Z1$=Str$(Z)-" " : Screen Hide 1
  270.    Load Iff "Ap:Shakes/Tutorial/Help_Screen"+Z1$,1
  271.    Screen Display 1,128,35,640,256
  272.    Screen Show 1
  273.    XM=1 : OLD_XM=0
  274.    Colour 17,$B73
  275.    Colour 18,$D93
  276.    Colour 19,$FB8
  277.    FLAG_EXIT=0
  278.    SUB=0
  279.    Repeat 
  280.       MOUSE_CONVERT
  281.       If(M_KEY and 4)=4 Then XM=0
  282.       If(M_KEY and 8)=8 Then XM=1
  283.       If OLD_XM<>XM
  284.          Sprite 1,128+16+(XM*248),230,3
  285.       End If 
  286.       If((M_KEY and $10)<>0 and(XM=1)) or((M_KEY and $20)<>0)
  287.          FLAG_EXIT=1
  288.       End If 
  289.       If((M_KEY and $10)=$10) and(XM=0)
  290.          Add SUB,1
  291.          Z$=Chr$(Asc("a")+SUB-1)
  292.          If Exist("Ap:Shakes/Tutorial/Help_Screen"+Z1$+Z$)
  293.             Load Iff "Ap:Shakes/Tutorial/Help_Screen"+Z1$+Z$,7 : Screen Hide 7
  294.             Screen 1 : Fade 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 : Wait 16
  295.             Screen Copy 7 To 1
  296.             Fade 1 To 7,$FFFF : Wait 16
  297.             Screen Close 7
  298.             Screen Show 1
  299.          Else 
  300.             Add SUB,-1
  301.          End If 
  302.       End If 
  303.       OLD_XM=XM
  304.    Until FLAG_EXIT=1
  305.    Sprite Off 1
  306.    Proc BUTTON_WAIT
  307.    If PIC_FLG=1
  308.       A$=Str$(S_BOOK)-" "
  309.       If Len(A$)=1
  310.          A$="0"+A$
  311.       End If 
  312.       Load Iff "Ap:Shakes/Pictures/"+A$+"/"+ACT$+".Iff",1
  313.       Screen To Back 1 : Screen Hide 1
  314.    Else 
  315.       Screen 1 : Cls 0 : Screen To Back 1 : Screen Hide 1
  316.    End If 
  317.    Screen Show 4 : Screen Show 2 : Screen Show 0
  318. End Proc
  319. Procedure VERSE
  320.    Proc ACT_PRINT
  321.    Pof(1)=Leek(Start(9)+(INDX*4))
  322.    Screen 4
  323.    Cls 1,16,0 To 624,BACK_SCREEN
  324.    Screen Offset 4,0,FACE_OFFSET
  325.    Gr Writing 0
  326.    X=30 : Y=5+Text Base
  327.    PAGE_SIZE=Y-Text Base
  328.    XXX=Free
  329.    Line Input #1,TEST$ : A=Instr(TEST$,Chr$(9))
  330.    A1=Instr(TEST$,Chr$(32))
  331.    If A<>0
  332.       FACE$=Mid$(TEST$,1,A-1)
  333.       TEST$=Mid$(TEST$,A+1,Len(TEST$))
  334.       PROPORTIONAL[FACE$] : X=X+10
  335.    Else 
  336.       If A1=0 and INDX>0
  337.          XXX=Free : Line Input #1,A$ : TEST$=TEST$+" "+A$+" "
  338.       End If 
  339.    End If 
  340.    TEST$=TEST$-Chr$(9)
  341.    PROPORTIONAL[TEST$]
  342.    Y=Y+FSIZE : X=30
  343.    Repeat 
  344.       XXX=Free : Line Input #1,TEST$
  345.       C=Asc(Mid$(TEST$,1,1))
  346.       TEST$=TEST$-Chr$(9)
  347.       If(C=32) or(C=9)
  348.          PROPORTIONAL[TEST$]
  349.          Y=Y+FSIZE : X=30
  350.       End If 
  351.    Until((C<>32) and(C<>9) and(C<>13)) or Eof(1) and Y<1024-FSIZE
  352.    If Eof(1) Then FLAG_NEW_FILE=1
  353.    PAGE_SIZE=Y-PAGE_SIZE
  354.    Gr Writing 1
  355.    'Screen Copy 0,0,SCR_H+1-(43*PAL),640,SCR_H+21-(43*PAL) To 0,0,166-(43*PAL)
  356.    If DEMO_FLG=0
  357.       Screen Show 4
  358.    End If 
  359. End Proc
  360. Procedure PROPORTIONAL[Z$]
  361.    TX=1 : SX=1
  362.    Z$=Z$-Chr$(13)+" "
  363.    Repeat 
  364.       Repeat 
  365.          SX=Instr(Z$," ",SX)
  366.          If SX<Len(Z$)
  367.             P$=Mid$(Z$,TX,SX-TX)
  368.             X1=Text Length(P$)
  369.             Add SX,1
  370.          Else 
  371.             P$=Mid$(Z$,TX,Len(Z$))
  372.             X1=Text Length(P$)
  373.             SX=Len(Z$)
  374.          End If 
  375.          If X1+X>615
  376.             SX=OLD_SX-1
  377.             P$=Mid$(Z$,TX,SX-TX)
  378.          End If 
  379.          OLD_SX=SX
  380.       Until SX>=Len(Z$) or X1+X>615
  381.       Set Text 2 : Ink 3 : Text X+1,Y+1,P$
  382.       Set Text 0 : Ink 2 : Text X,Y,P$
  383.       Add Y,FSIZE
  384.       If SX<Len(Z$) Then X=40 Else X=X+X1
  385.       TX=SX
  386.    Until SX>=Len(Z$)
  387.    Add Y,-FSIZE
  388. End Proc
  389. Procedure PIC_SHOW
  390.    If PIC_FLG=0 Then Pop Proc
  391.    Proc BUTTON_WAIT
  392.    Screen Show 1 : Sprite Off 9
  393.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  394.    Screen Hide 4
  395.    SY1=35
  396.    SY2=ICONS_Y
  397.    Auto View On 
  398.    Screen To Front 0
  399.    Repeat 
  400.       Wait Vbl 
  401.       Screen Display 0,,SY1,,
  402.       Screen Display 2,,SY2,,
  403.       Add SY1,2
  404.       Add SY2,-2
  405.    Until SY2<-40
  406.    Proc BUTTON_WAIT1
  407.    Screen To Front 2
  408.    Screen To Front 4
  409.    Repeat 
  410.       Wait Vbl 
  411.       Screen Display 0,,SY1,,
  412.       Screen Display 2,,SY2,,
  413.       Add SY1,-2
  414.       Add SY2,2
  415.    Until SY2=ICONS_Y+2
  416.    Screen Show 4 : Screen Hide 1
  417.    Proc BUTTON_WAIT
  418. End Proc
  419. Procedure FONTS_UP
  420.    Inc FO1
  421.    If FO1>FO_MAX Then FO1=1
  422.    Screen 4 : SET_FONT[FO1] : FO=Param : Set Font Param
  423.    F_STR$=Font$(FO) : FSIZE=Val(Mid$(F_STR$,30,4))
  424.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  425.    FACE_OFFSET=0 : Proc VERSE : Proc ACT_PRINT
  426. End Proc
  427. Procedure FONTS_DOWN
  428.    Dec FO1
  429.    If FO1=0 Then FO1=FO_MAX
  430.    Screen 4 : SET_FONT[FO1] : FO=Param : Set Font FO
  431.    F_STR$=Font$(FO) : FSIZE=Val(Mid$(F_STR$,30,4))
  432.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  433.    FACE_OFFSET=0 : Proc VERSE : Proc ACT_PRINT
  434. End Proc
  435. Procedure CHAPTER_INC
  436.    If SEL$(SEL+1)="#" Then Pop Proc
  437.    Add SEL,1
  438.    Close 1
  439.    Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  440.    Bload DRECTORY$+SEL$(SEL)+".Idx1",9
  441.    Open In 1,DRECTORY$+SEL$(SEL)
  442.    ACT$=SEL$(SEL)
  443.    INDX=0
  444.    FACE_OFFSET=0
  445.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  446.    Proc VERSE
  447.    Proc DISPLAY_A_PIC
  448.    NO_CLEAR=1 : Proc ACT_PRINT : NO_CLEAR=0
  449. End Proc
  450. Procedure CHAPTER_DEC
  451.    If SEL=1 Then Pop Proc
  452.    Add SEL,-1
  453.    Close 1
  454.    Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  455.    Bload DRECTORY$+SEL$(SEL)+".Idx1",9
  456.    Open In 1,DRECTORY$+SEL$(SEL)
  457.    ACT$=SEL$(SEL)
  458.    INDX=0
  459.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  460.    FACE_OFFSET=0
  461.    Proc VERSE
  462.    Proc DISPLAY_A_PIC
  463.    NO_CLEAR=1 : Proc ACT_PRINT : NO_CLEAR=0
  464. End Proc
  465. Procedure UP_SCROLL
  466.    FLG_DIR=1
  467.    F$=""
  468.    If FLAG_NEW_FILE=1 or INDX=INDX_MAX
  469.       Add SEL,1
  470.       If SEL$(SEL)="#"
  471.          SEL=1
  472.          If S_BOOK<41
  473.             Add S_BOOK,1
  474.             Proc FIND_BOOK[S_BOOK]
  475.             INDX=-1
  476.          Else 
  477.             Add INDX,-1
  478.          End If 
  479.       Else 
  480.          Close 1
  481.          Open In 1,DRECTORY$+SEL$(SEL)
  482.          Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  483.          Bload DRECTORY$+SEL$(SEL)+".Idx1",9 : INDX=-1
  484.          ACT$=SEL$(SEL) : OLD_ACT$="#"
  485.       End If 
  486.       FLAG_NEW_FILE=0
  487.    End If 
  488.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  489.    FACE_OFFSET=0
  490.    Add INDX,1
  491.    VERSE
  492.    If Mid$(ACT$,1,Instr(ACT$,"_"))<>Mid$(OLD_ACT$,1,Instr(OLD_ACT$,"_")) Then Proc DISPLAY_A_PIC
  493.    NO_CLEAR=1 : Proc ACT_PRINT : NO_CLEAR=0
  494.    OLD_ACT$=ACT$
  495. End Proc
  496. Procedure DWN_SCROLL
  497.    FLG_DIR=0
  498.    FLAG_NEW_FILE=0
  499.    Add INDX,-1
  500.    If INDX>-1
  501.       Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  502.       FACE_OFFSET=0
  503.       Proc VERSE
  504.    End If 
  505.    If INDX<0
  506.       Add SEL,-1
  507.       If SEL=0
  508.          SEL=1
  509.          If S_BOOK>0
  510.             Add S_BOOK,-1
  511.             Proc FIND_BOOK[S_BOOK]
  512.             FACE_OFFSET=0
  513.             Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  514.             Proc VERSE
  515.          Else 
  516.             Add INDX,1
  517.          End If 
  518.       Else 
  519.          Close 1
  520.          Open In 1,DRECTORY$+SEL$(SEL)
  521.          Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  522.          Bload DRECTORY$+SEL$(SEL)+".Idx1",9
  523.          INDX=INDX_MAX
  524.          FACE_OFFSET=0
  525.          Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  526.          Proc VERSE
  527.          ACT$=SEL$(SEL) : OLD_ACT$="#"
  528.       End If 
  529.    End If 
  530.    If Mid$(ACT$,1,Instr(ACT$,"_"))<>Mid$(OLD_ACT$,1,Instr(OLD_ACT$,"_")) Then Proc DISPLAY_A_PIC
  531.    NO_CLEAR=1 : Proc ACT_PRINT : NO_CLEAR=0
  532.    OLD_ACT$=ACT$
  533. End Proc
  534. Procedure BOOK_LOAD
  535.    OLD_S_BOOK=S_BOOK
  536.    SHELF_Y=0
  537.    Auto View Off 
  538.    Screen Open 4,(22*34),256,16,Lowres
  539.    Screen Hide 4
  540.    Screen 4 : Cls 0 : Flash Off : Curs Off 
  541.    Load Iff "Ap:Shakes/Graphics/BOOKSHELF1",3
  542.    Screen Hide 3
  543.    Screen Copy 3,0,0,305,256 To 4,0,0
  544.    Load Iff "Ap:Shakes/Graphics/BOOKSHELF2",3
  545.    Screen Hide 3
  546.    Screen Copy 3,0,0,305,256 To 4,305,0
  547.    Load Iff "Ap:Shakes/Graphics/BOOKSHELF3",3
  548.    Screen Hide 3
  549.    Screen Copy 3,0,0,305,256 To 4,305*2,0
  550.    Screen Display 4,140,35,320,256-(43*PAL)
  551.    Screen 4
  552.    Get Palette 3
  553.    Screen Close 3
  554.    Colour 17,$B73
  555.    Colour 18,$D93
  556.    Colour 19,$FB8
  557.    Screen Hide 2
  558.    Screen Show 4
  559.    Screen To Front 4
  560.    Auto View On 
  561.    Sprite Off 9
  562.    If NEW_FLG=1 and SHELF_OFFSET>(34*5) Then SHELF_OFFSET=(34*5)
  563.    Screen Offset 4,SHELF_OFFSET,SHELF_Y
  564.    Screen Show 4
  565.    Screen To Front 4
  566.    FLG_EXIT=0
  567.    DEL=10
  568.    X_M=5 : Y_M=0
  569.    Screen 4
  570.    Screen Hide 0
  571.    Repeat 
  572.       Proc MOUSE_CONVERT
  573.       XM=X Hard(4,X_M*34)
  574.       If PAL=0 Then YM=Y Hard(4,56+(Y_M*140)) Else YM=Y Hard(4,56+(Y_M*100))
  575.       If(M_KEY and 16)=16
  576.          Sprite 9,XM,YM-20,3
  577.          Wait 5
  578.          Sprite 9,XM,YM-20,4
  579.          Wait 5
  580.          Sprite 9,XM,YM-20,5
  581.       Else 
  582.          Sprite 9,XM,YM-20,3
  583.       End If 
  584.       A=PAL
  585.       While A=1
  586.          If Y_M=1 and SHELF_Y=0
  587.             For SHELF_Y=1 To 42 Step 2
  588.                Wait Vbl : Screen Offset 4,SHELF_OFFSET,SHELF_Y
  589.             Next SHELF_Y
  590.             Wait Vbl : Screen Offset 4,SHELF_OFFSET,SHELF_Y
  591.          End If 
  592.          If Y_M=0 and SHELF_Y>0
  593.             For SHELF_Y=42 To 1 Step -2
  594.                Wait Vbl : Screen Offset 4,SHELF_OFFSET,SHELF_Y
  595.             Next SHELF_Y
  596.             Wait Vbl : Screen Offset 4,SHELF_OFFSET,SHELF_Y
  597.          End If 
  598.          A=0
  599.       Wend 
  600.       If M_KEY<>0 Then Wait DEL
  601.       If(M_KEY and 4)=4 and X_M>-1 Then Add X_M,-1
  602.       If(M_KEY and 8)=8 and X_M<9 Then Add X_M,1
  603.       If(M_KEY and 1)=1 and Y_M>0 Then Add Y_M,-1
  604.       If(M_KEY and 2)=2 and Y_M<1 Then Add Y_M,1
  605.       If(X_M=-1 and(M_KEY and 4)=4) and SHELF_OFFSET<>0
  606.          For X=1 To 17
  607.             Proc SHELF_LEFT
  608.             Wait Vbl : Screen Offset 4,SHELF_OFFSET,SHELF_Y
  609.          Next X
  610.       End If 
  611.       If(X_M=9 and(M_KEY and 8)=8) and SHELF_OFFSET<(12*34)
  612.          For X=1 To 17
  613.             Proc SHELF_RIGHT
  614.             Wait Vbl : Screen Offset 4,SHELF_OFFSET,SHELF_Y
  615.          Next X
  616.       End If 
  617.       If X_M=-1 Then X_M=0
  618.       If X_M=9 Then X_M=8
  619.       S_BOOK=(X_M+(SHELF_OFFSET/34))
  620.       S_BOOK=S_BOOK+(Y_M*21)
  621.       If(M_KEY and 16)=16 and(S_BOOK<42)
  622.          Proc FIND_BOOK[S_BOOK]
  623.       Else 
  624.          If(M_KEY and $20)=$20
  625.             FLG_EXIT=1
  626.          Else 
  627.             FLG_EXIT=0
  628.          End If 
  629.          M_KEY=0
  630.       End If 
  631.    Until M_KEY<>0 or FLG_EXIT<>0
  632.    If FLG_EXIT=1
  633.       S_BOOK=OLD_S_BOOK
  634.    End If 
  635.    Sprite Off 9
  636.    Proc BUTTON_WAIT
  637.    Screen Show 2
  638.    Screen Show 0
  639.    Screen Hide 4
  640.    Screen Open 4,640,BACK_SCREEN,4,Hires
  641.    Screen Hide 4
  642.    Screen 4 : Curs Off : Flash Off 
  643.    Screen Display 4,128,56,320,144-(43*PAL)
  644.    Screen 4 : Flash Off : Cls 0 : Cls 1,16,0 To 624,BACK_SCREEN : Colour 1,$986 : Colour 2,$FFF : Colour 3,$0
  645.    Set Font FO
  646.    FACE_OFFSET=0
  647.    Proc BOOK_LIST
  648.    Proc VERSE
  649.    Proc DISPLAY_A_PIC
  650.    Proc ACT_PRINT
  651.    OLD_ACT$=ACT$
  652. End Proc
  653. Procedure SHELF_LEFT
  654.    If SHELF_OFFSET=0 Then Pop Proc
  655.    Add SHELF_OFFSET,-2
  656. End Proc
  657. Procedure SHELF_RIGHT
  658.    A=NEW_FLG
  659.    While A=0
  660.       If SHELF_OFFSET>(12*34) Then Pop Proc
  661.       A=-1
  662.    Wend 
  663.    While A=1
  664.       If SHELF_OFFSET>(5*34) Then Pop Proc
  665.       A=-1
  666.    Wend 
  667.    Add SHELF_OFFSET,2
  668. End Proc
  669. Procedure FIND_BOOK[TEMP1]
  670.    Close 1
  671.    Proc BOOK_LIST
  672.    SEL=1
  673.    DRECTORY$="Ap:Shakes/Text/"
  674.    A$=Str$(TEMP1)-" " : If Len(A$)=1 Then A$="0"+A$
  675.    DRECTORY$=DRECTORY$+A$+"/"
  676.    Open In 1,DRECTORY$+SEL$(SEL)
  677.    Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  678.    Bload DRECTORY$+SEL$(SEL)+".Idx1",9 : INDX=0
  679. End Proc
  680. Procedure BOOK_LIST
  681.    A$=Str$(S_BOOK)-" " : If Len(A$)=1 Then A$="0"+A$
  682.    DRECTORY$="Ap:Shakes/Text/"+A$+"/"
  683.    Open In 3,DRECTORY$+"00_00.inf"
  684.    Z=0
  685.    Repeat 
  686.       XXX=Free : Line Input #3,A$ : A$=A$-Chr$(13)
  687.       SEL$(Z)=A$
  688.       Inc Z
  689.    Until A$="#"
  690.    ACT$=SEL$(SEL)
  691.    TITLE$=SEL$(0)
  692.    SEL=1 : SEL_MAX=Z-1
  693.    Close 3
  694. End Proc
  695. Procedure SEARCH_TEXT
  696.    For A=0 To 4 : T$(A)="" : Next A
  697.    Screen Open 4,320,230,32,Lowres
  698.    Screen Hide 4 : Screen Hide 1
  699.    Screen 4
  700.    Curs Off 
  701.    Flash Off 
  702.    Auto View Off 
  703.    Load Iff "Ap:Shakes/Graphics/keypad_v2",3
  704.    Screen Hide 3
  705.    Screen Copy 3,0,0,320,205 To 4,0,0
  706.    Curs Off : Flash Off : Auto View On : Screen 4
  707.    Get Palette 3 : Get Palette 0,$F0000
  708.    If SEARCH_FLG=1
  709.       Screen Copy 3,2,206,70,206+26 To 4,161,121
  710.    Else 
  711.       Screen Copy 3,73,206,72+70,206+26 To 4,160,121
  712.    End If 
  713.    Screen Display 4,128,35,320,200
  714.    Screen Show 4
  715.    Screen To Front 4
  716.    REENTER_FLG=0
  717.    WORD=0
  718.    Screen Hide 2
  719.    Gr Writing 0
  720.    SET_FONT[12] : Set Font Param
  721.    Ink 0
  722.    Text 23,175,T$(WORD)
  723.    Ink 15
  724.    Text 21,173,T$(WORD)
  725.    FLG_EXIT=0
  726.    T_X=0 : T_Y=1
  727.    X_M=X Hard(4,16+(T_X*32))
  728.    Y_M=Y Hard(4,T_Y*32)
  729.    OLD_M_KEY=0
  730.    B_X=0
  731.    Screen Copy 3,217+(WORD*19),204+5,217+(WORD*19)+18,204+18-2 To 4,280-3,84+12
  732.    Repeat 
  733.       If FLG_MOVE=1 Then Wait 10
  734.       Proc MOUSE_CONVERT
  735.       OLD_M_KEY=M_KEY
  736.       If T_Y<4 Then X_M=X Hard(4,16+(T_X*32))
  737.       If T_Y=4 Then X_M=X Hard(4,50+(B_X*70))
  738.       Y_M=Y Hard(4,T_Y*32)
  739.       If(M_KEY and 16)=16
  740.          Sprite 9,X_M-20,Y_M-20+20,2
  741.          Proc BUTTON_WAIT
  742.          M_KEY=16
  743.       Else 
  744.          Sprite 9,X_M-20,Y_M-20+20,1
  745.       End If 
  746.       CON=0
  747.       TEMP1=T_Y
  748.       While TEMP1=3
  749.          If T_X<3 Then B_X=0
  750.          If T_X>2 and T_X<5 Then B_X=1
  751.          If T_X>4 and T_X<7 Then B_X=2
  752.          If T_X>6 Then B_X=3
  753.          TEMP1=0
  754.       Wend 
  755.       TEMP1=T_Y
  756.       While TEMP1=4
  757.          If B_X=0 Then T_X=1
  758.          If B_X=1 Then T_X=4
  759.          If B_X=2 Then T_X=6
  760.          If B_X=3 Then T_X=8
  761.          TEMP1=0
  762.       Wend 
  763.       If(M_KEY and $F)<>0 Then FLG_MOVE=1 Else FLG_MOVE=0
  764.       If(M_KEY and 4)=4 and T_X>0 and T_Y<4 Then Add T_X,-1
  765.       If(M_KEY and 8)=8 and T_X<9 and T_Y<4 Then Add T_X,1
  766.       If(M_KEY and 1)=1 and T_Y>1 and T_Y<5 Then Add T_Y,-1
  767.       If(M_KEY and 2)=2 and T_Y<4 and T_Y<4 Then Add T_Y,1
  768.       If(M_KEY and 4)=4 and B_X>0 and T_Y=4 Then Add B_X,-1
  769.       If(M_KEY and 8)=8 and B_X<3 and T_Y=4 Then Add B_X,1
  770.       A=(T_X)+(10*(T_Y-1))+65
  771.       If(M_KEY and 16)=16 and T_Y<4 Then CON=1
  772.       If(M_KEY and 16)=16 and T_Y=4 and B_X=0 Then CON=3
  773.       If(M_KEY and 16)=16 and T_Y=4 and B_X=1 Then CON=2
  774.       If(M_KEY and 16)=16 and T_Y=4 and B_X=2 Then CON=5
  775.       If(M_KEY and 16)=16 and T_Y=4 and B_X=3 Then CON=4
  776.       If Chr$(A)="[" Then A=Asc("'")
  777.       If Chr$(A)="\" Then A=Asc("-")
  778.       X$=Upper$(K_KEY$) : If((X$>="A") and(X$<="Z")) or(X$="-") or(X$="'") Then A=Asc(X$) : Play $F,50,0 : CON=1
  779.       If X$=Chr$(8) Then CON=2 : Play $F,50,0
  780.       If X$=(Chr$(13)) or(X$=" ") Then CON=1 : A=Asc("]") : Play $F,50,0
  781.       If CON=1
  782.          While(Chr$(A)="^") or(Chr$(A)="]")
  783.             A=Asc("")
  784.             Inc WORD
  785.             While WORD=5
  786.                WORD=0
  787.             Wend 
  788.             Screen Copy 3,217+(WORD*19),204+5,217+(WORD*19)+18,204+18-2 To 4,280-3,84+12
  789.             Screen Copy 3,21,152,300,175 To 4,21,152
  790.             Ink 0
  791.             Text 23,175,T$(WORD)
  792.             Ink 15
  793.             Text 21,173,T$(WORD)
  794.             CON=0
  795.          Wend 
  796.       End If 
  797.       If CON=1
  798.          T$(WORD)=T$(WORD)+Chr$(A)
  799.       End If 
  800.       T=Text Length(T$(WORD))
  801.       A=Len(T$(WORD))
  802.       If CON=1 and(T>260 or A>62)
  803.          T$(WORD)=Mid$(T$(WORD),1,A-1)
  804.       End If 
  805.       If CON=2 and A>0
  806.          T$(WORD)=Mid$(T$(WORD),1,A-1)
  807.       End If 
  808.       If CON=4 Then FLG_EXIT=1
  809.       If CON<>0
  810.          Wait Vbl 
  811.          Rem * put screen copy here to blank out line 
  812.          Screen Copy 3,21,152,300,175 To 4,21,152
  813.          Ink 0
  814.          Text 23,175,T$(WORD)
  815.          Ink 15
  816.          Text 21,173,T$(WORD)
  817.          T1$=T$(WORD)
  818.       End If 
  819.       If CON=5
  820.          While SEARCH_FLG=0
  821.             SEARCH_FLG=1
  822.             Screen Copy 3,2,206,70,206+26 To 4,161,121
  823.             CON=1
  824.          Wend 
  825.          While SEARCH_FLG=1 and CON<>1
  826.             SEARCH_FLG=0
  827.             Screen Copy 3,73,206,72+70,206+26 To 4,160,121
  828.          Wend 
  829.       End If 
  830.       While CON<>0 and(M_KEY and 16)=16
  831.          Sprite 9,X_M-20,Y_M-20+20,2
  832.          Proc MOUSE_CONVERT
  833.       Wend 
  834.       While CON=3
  835.          TEMP$=""
  836.          For A=0 To 4
  837.             If T$(A)<>"" Then TEMP$=TEMP$+T$(A)+" "
  838.          Next A
  839.          Proc SEARCH[TEMP$] : Screen 4 : Get Palette 0,$FFFF0000
  840.          While(CON<>2) and(Param>0)
  841.             Rem Screen Open 4,320,230,32,Lowres
  842.             Rem Screen Hide 4 : Screen 4 : Curs Off : Flash Off  
  843.             Rem Screen Copy 3,0,0,320,200 To 4,0,0 
  844.             If SEARCH_FLG=1
  845.                Screen Copy 3,2,206,70,206+26 To 4,161,121
  846.             Else 
  847.                Screen Copy 3,73,206,72+70,206+26 To 4,160,121
  848.             End If 
  849.             Screen Copy 3,217+(WORD*19),204+5,217+(WORD*19)+18,204+18-2 To 4,280-3,84+12
  850.             Screen 4
  851.             Gr Writing 0
  852.             SET_FONT[12] : Set Font Param
  853.             Ink 0
  854.             Text 23,175,T$(WORD)
  855.             Ink 15
  856.             Text 21,173,T$(WORD)
  857.             Get Palette 3 : Get Palette 0,$FFFF0000
  858.             Screen Display 4,128,35,320,200
  859.             Screen Show 4
  860.             Screen To Front 4
  861.             CON=2
  862.          Wend 
  863.          CON=-1
  864.       Wend 
  865.       If(M_KEY and 32)=32 Then FLG_EXIT=1
  866.    Until(FLG_EXIT<>0) or(FLAG=2)
  867.    FLAG=0
  868.    Erase 16
  869.    SET_FONT[12] : Set Font Param
  870.    Sprite 9,128+160-10,250-20-(43*PAL)+20,1
  871.    Screen Display 3,128,35,320,200
  872.    Screen Open 4,640,BACK_SCREEN,4,Hires
  873.    Screen Hide 4
  874.    Screen 4 : Flash Off : Cls 0 : Cls 1,16,0 To 624,BACK_SCREEN : Colour 1,$986 : Colour 2,$FFF : Colour 3,$0
  875.    Screen Display 4,128,56,320,144-(43*PAL)
  876.    Screen 4 : Set Font FO
  877.    Screen Show 0 : Screen Show 4
  878.    Screen Show 2
  879.    Screen Close 3
  880.    FACE_OFFSET=0 : DEMO_FLG=1 : Proc VERSE
  881.    Proc DISPLAY_A_PIC : DEMO_FLG=0
  882.    Proc ACT_PRINT
  883. End Proc
  884. Procedure FIRST_LOAD
  885.    Rem ***********************************************
  886.    Rem * load first book, first chapter, first verse *
  887.    Rem ***********************************************
  888.    SEL=1 : S_BOOK=0
  889.    Proc BOOK_LIST
  890.    Open In 1,DRECTORY$+SEL$(SEL)
  891.    Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  892.    Reserve As Work 9,(1*1024)
  893.    Bload DRECTORY$+SEL$(SEL)+".Idx1",9
  894.    INDX=0
  895.    ACT$="01_01"
  896.    F_POINTER=0
  897.    Get Fonts 
  898.    PIC_FLG=1
  899.    OLD_ACT$=ACT$
  900.    Screen Close 3
  901.    Curs Off 
  902.    Screen Close 6
  903.    Screen Open 4,640,BACK_SCREEN,4,Hires
  904.    Screen Display 4,128,56,640,144-(43*PAL)
  905.    Screen 4 : Flash Off : Cls 0 : Colour 1,$986 : Colour 2,$FFF : Colour 3,$0
  906.    Cls 1,16,0 To 624,BACK_SCREEN
  907.    Proc FONTS_UP
  908.    Screen 0 : Ink 0 : Pen 0 : Draw 0,0 To 16,0
  909.    Gr Writing 0
  910.    Proc DISPLAY_A_PIC
  911. End Proc
  912. Procedure BOOK_MARK
  913.    Proc BUTTON_WAIT
  914.    Screen Open 4,640,200,16,Hires
  915.    Screen Display 4,140,35,640,210
  916.    Screen Hide 4 : Screen Hide 1
  917.    Screen 4
  918.    Curs Off 
  919.    Flash Off 
  920.    Auto View Off 
  921.    Load Iff "Ap:Shakes/Graphics/book_mark_hires",3
  922.    Screen Hide 3
  923.    Screen 4
  924.    Get Palette 3 : Get Palette 2,$FFFF0000
  925.    Screen Copy 3,0,0,640,200 To 4,0,0
  926.    Screen Offset 4,0,0
  927.    Screen Show 4
  928.    Screen To Front 4
  929.    Screen Hide 2
  930.    Auto View On 
  931.    Rem ******************** 
  932.    Rem * Functions :-     * 
  933.    Rem * Insert,Goto,Exit * 
  934.    Rem ******************** 
  935.    Screen 4
  936.    Gr Writing 0
  937.    M=1
  938.    Screen 4
  939.    SET_FONT[19] : Set Font Param : Set Text 2
  940.    Ink 2
  941.    For A=1 To 7
  942.       If MARK$(A)<>""
  943.          A$=Mid$(MARK$(A),1,2)
  944.          B$=Mid$(MARK$(A),3,5)
  945.          DRECTORY$="Ap:Shakes/Text/"+A$+"/"
  946.          Open In 3,DRECTORY$+"00_00.Inf"
  947.          Input #3,A$
  948.          A$=A$-Chr$(13)
  949.          Close 3
  950.          C$=Mid$(B$,4,2)
  951.          B$=Mid$(B$,1,2)
  952.          Z=NUM_TYPE
  953.          While Z<>0
  954.             B$=NUMERAL$(Val(B$))
  955.             C$=NUMERAL$(Val(C$))
  956.             Z=0
  957.          Wend 
  958.          Z=NUM_TYPE
  959.          While Z=0
  960.             B$=Str$(Val(B$))
  961.             C$=Str$(Val(C$))
  962.             Z=1
  963.          Wend 
  964.          D$=B$
  965.          While(D$<>" 0") and(D$<>"")
  966.             Z$=Mid$(A$,1,30)+", Act "+B$+" Scene "+C$
  967.             D$=""
  968.          Wend 
  969.          D$=B$
  970.          While(D$=" 0") or(D$="")
  971.             Z$=Mid$(A$,1,30)+", "+Mid$(MARK$(A),3,Len(MARK$(A)))
  972.             D$=" "
  973.          Wend 
  974.          Text 158,(A*24)+17,Z$
  975.       End If 
  976.    Next A
  977.    Gr Writing 2
  978.    Bar 154,(M*24)+1 To 617,(M*24)+19
  979.    Gr Writing 0
  980.    Rem ********************** 
  981.    Rem * wait for selection * 
  982.    Rem ********************** 
  983.    M=1 : M1=M
  984.    FLG_EXIT=0
  985.    B_X=0
  986.    Y_M=180
  987.    X_M=180 : OLD_X_M=0
  988.    Repeat 
  989.       Proc MOUSE_CONVERT
  990.       If(M_KEY and 16)=16
  991.          Sprite 9,X_M-10,Y_M+20,2
  992.          Proc BUTTON_WAIT
  993.          M_KEY=16
  994.       Else 
  995.          If OLD_X_M<>X_M
  996.             Sprite 9,X_M-10,Y_M+20,1
  997.          End If 
  998.       End If 
  999.       FLG=0 : M_FLG=0 : OLD_X_M=X_M
  1000.       If(M_KEY and 1)=1 and M>1 Then M1=M : Add M,-1 : M_FLG=1 : Wait 10
  1001.       If(M_KEY and 2)=2 and M<5 Then M1=M : Add M,1 : M_FLG=1 : Wait 10
  1002.       If(M_KEY and 4)=4 and B_X>0 Then Add B_X,-1 : Wait 10 : Proc MOUSE_CONVERT
  1003.       If(M_KEY and 8)=8 and B_X<2 Then Add B_X,1 : Wait 10 : Proc MOUSE_CONVERT
  1004.       If B_X=0 Then X_M=180
  1005.       If B_X=1 Then X_M=290
  1006.       If B_X=2 Then X_M=390
  1007.       Rem ********** 
  1008.       Rem * insert * 
  1009.       Rem ********** 
  1010.       If(M_KEY and 16)=16 and B_X=0 Then FLG=1
  1011.       While FLG=1
  1012.          A$=Str$(S_BOOK)-" " : If Len(A$)=1 Then A$="0"+A$
  1013.          B$=ACT$ : OLD_X_M=0
  1014.          MARK$(M)=A$+B$
  1015.          BOOKMARKS(M)=INDX
  1016.          A$=Mid$(MARK$(M),1,2)
  1017.          B$=Mid$(MARK$(M),3,5)
  1018.          D$=""
  1019.          DRECTORY$="Ap:Shakes/Text/"+A$+"/"
  1020.          Open In 3,DRECTORY$+"00_00.inf"
  1021.          Input #3,D$
  1022.          D$=D$-Chr$(13)
  1023.          Close 3
  1024.          C$=Mid$(B$,4,2)
  1025.          B$=Mid$(B$,1,2)
  1026.          Z=NUM_TYPE
  1027.          While Z<>0
  1028.             B$=NUMERAL$(Val(B$))
  1029.             C$=NUMERAL$(Val(C$))
  1030.             Z=0
  1031.          Wend 
  1032.          Z=NUM_TYPE
  1033.          While Z=0
  1034.             B$=Str$(Val(B$))
  1035.             C$=Str$(Val(C$))
  1036.             Z=1
  1037.          Wend 
  1038.          If B$<>" 0"
  1039.             Z$=Mid$(D$,1,30)+", Act "+B$+" Scene "+C$
  1040.          Else 
  1041.             Z$=Mid$(D$,1,30)+", "+ACT$
  1042.          End If 
  1043.          A$=""
  1044.          Screen Copy 3,155,(M*24)-3,625,(M*24)+23 To 4,155,(M*24)-3
  1045.          Ink 2
  1046.          Text 158,(M*24)+17,Z$
  1047.          Gr Writing 2
  1048.          Bar 154,(M*24)+1 To 617,(M*24)+19
  1049.          Gr Writing 0
  1050.          FLG=0
  1051.       Wend 
  1052.       FLG=0
  1053.       Rem ******** 
  1054.       Rem * Goto * 
  1055.       Rem ******** 
  1056.       If(M_KEY and 16)=16 and B_X=1 Then FLG=1
  1057.       While FLG=1
  1058.          A$=Mid$(MARK$(M),1,2)
  1059.          B$=Mid$(MARK$(M),3,5)
  1060.          D$="" : OLD_X_M=0
  1061.          DRECTORY$="Ap:Shakes/Text/"+A$+"/"
  1062.          FLG=0 : If A$<>"" Then FLG_EXIT=2
  1063.       Wend 
  1064.       Rem ******** 
  1065.       Rem * Exit * 
  1066.       Rem ******** 
  1067.       If(M_KEY and 16)=16 and B_X=2 Then FLG_EXIT=1
  1068.       FLG=0
  1069.       Rem ***************
  1070.       Rem * Select Mark *
  1071.       Rem ***************  
  1072.       If M_FLG<>0 Then FLG=1
  1073.       If FLG=1
  1074.          Gr Writing 2
  1075.          Bar 154,(M1*24)+1 To 617,(M1*24)+19
  1076.          Bar 154,(M*24)+1 To 617,(M*24)+19
  1077.          Gr Writing 0
  1078.          M1=M
  1079.       End If 
  1080.    Until(M_KEY and 32)=32 or FLG_EXIT<>0
  1081.    A$=Mid$(MARK$(M),1,2)
  1082.    Screen Close 3
  1083.    While FLG_EXIT=2 and(A$<>"")
  1084.       Rem *********************************
  1085.       Rem * Now goto book, Chapter, Verse *
  1086.       Rem *********************************
  1087.       B$=Mid$(MARK$(M),3,Len(MARK$(M))) : Rem * Chapter *
  1088.       S_BOOK=Val(A$) : Close 1
  1089.       Proc BOOK_LIST
  1090.       Z=0
  1091.       Repeat 
  1092.          Inc Z
  1093.       Until SEL$(Z)=B$
  1094.       SEL=Z
  1095.       A$=Mid$(MARK$(M),1,2)
  1096.       DRECTORY$="Ap:Shakes/Text/"
  1097.       DRECTORY$=DRECTORY$+A$+"/"
  1098.       Open In 1,DRECTORY$+SEL$(SEL)
  1099.       Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  1100.       Bload DRECTORY$+SEL$(SEL)+".Idx1",9 : INDX=0
  1101.       Rem ******************************** 
  1102.       Rem * open book at particular part * 
  1103.       Rem ******************************** 
  1104.       ACT$=SEL$(SEL)
  1105.       INDX=BOOKMARKS(M)
  1106.       FACE_OFFSET=0
  1107.       Sprite 9,128+160-10,250-20-(43*PAL)+20,1
  1108.       Screen Open 4,640,BACK_SCREEN,4,Hires
  1109.       Screen Hide 4
  1110.       Screen 4 : Curs Off : Flash Off 
  1111.       Screen Display 4,128,56,320,144-(43*PAL)
  1112.       Screen 4 : Flash Off : Cls 0 : Cls 1,16,0 To 624,BACK_SCREEN : Colour 1,$986 : Colour 2,$FFF : Colour 3,$0
  1113.       Screen Show 2 : Screen Show 4
  1114.       Screen 4 : Set Font FO : Set Text 0
  1115.       FACE_OFFSET=0
  1116.       Proc VERSE
  1117.       Proc DISPLAY_A_PIC
  1118.       Proc ACT_PRINT
  1119.       FLG_EXIT=3
  1120.    Wend 
  1121.    Proc BUTTON_WAIT
  1122.    While FLG_EXIT<>3
  1123.       Sprite 9,128+160-10,250-20-(43*PAL)+20,1
  1124.       Screen Open 4,640,BACK_SCREEN,4,Hires
  1125.       Screen Hide 4
  1126.       Screen 4 : Curs Off : Flash Off 
  1127.       Screen Display 4,128,56,320,144-(43*PAL)
  1128.       Screen 4 : Flash Off : Cls 0 : Cls 1,16,0 To 624,BACK_SCREEN : Colour 1,$986 : Colour 2,$FFF : Colour 3,$0
  1129.       Screen Show 2 : Screen Show 4
  1130.       Screen 4 : Set Font FO : Set Text 0
  1131.       FACE_OFFSET=0
  1132.       Proc VERSE
  1133.       Proc ACT_PRINT
  1134.       FLG_EXIT=3
  1135.    Wend 
  1136. End Proc
  1137. Procedure ACT_PRINT
  1138.    Screen 0
  1139.    SET_FONT[22] : Set Font Param : Gr Writing 0 : Set Text 2
  1140.    If NO_CLEAR=0
  1141.       Screen Copy 0,0,SCR_H+1-(43*PAL),640,SCR_H+21-(43*PAL) To 0,0,1
  1142.       Screen Copy 0,0,SCR_H+1-(43*PAL),640,SCR_H+21-(43*PAL) To 0,0,166-(43*PAL)
  1143.       ACT=Val(Mid$(ACT$,1,Instr(ACT$,"_")))
  1144.       VERSE=Val(Mid$(ACT$,Instr(ACT$,"_")+1,Len(ACT$)))
  1145.       If NUM_TYPE=1
  1146.          A1$=NUMERAL$(ACT)
  1147.          A2$=NUMERAL$(VERSE)
  1148.       Else 
  1149.          A1$=Str$(ACT)-" "
  1150.          A2$=Str$(VERSE)-" "
  1151.       End If 
  1152.       If A1$<>"0"
  1153.          B$="Act "+A1$+" Scene "+A2$
  1154.       Else 
  1155.          B$=ACT$
  1156.       End If 
  1157.       L=Text Length(B$)
  1158.       L=320-(L/2)
  1159.       Ink 0 : Text L,166+15-(43*PAL),B$
  1160.       Set Text 0 : Ink 14 : Text L-1,166+15-(43*PAL)-1,B$
  1161.       L=Text Length(TITLE$)
  1162.       L=320-(L/2)
  1163.       Set Text 2 : Ink 0 : Text L,15,TITLE$
  1164.       Set Text 0 : Ink 14 : Text L-1,15-1,TITLE$
  1165.    End If 
  1166.    If PIC_FLG=1
  1167.       Set Text 2 : Ink 0 : Text 500,166+15-(43*PAL),"Picture"
  1168.       Set Text 0 : Ink 14 : Text 500-1,166+15-(43*PAL)-1,"Picture"
  1169.    End If 
  1170.    If PAGE_SIZE>140-(43*PAL)
  1171.       Set Text 2 : Ink 0 : Text 30,180-(44*PAL),">"
  1172.       Text 29,180-(44*PAL),"-"
  1173.       Text 29-9,180-(44*PAL),"-"
  1174.       Set Text 0 : Ink 14 : Text 30-1,180-(44*PAL)-1,">"
  1175.       Text 29-1,180-(44*PAL)-1,"-"
  1176.       Text 29-9-1,180-(44*PAL)-1,"-"
  1177.    End If 
  1178. End Proc
  1179. Procedure SCR_TEXT_DOWN
  1180.    If FACE_OFFSET+2-(43*PAL)>(PAGE_SIZE-140) Then Pop Proc
  1181.    A=1
  1182.    Repeat 
  1183.       Add FACE_OFFSET,1
  1184.       Wait Vbl 
  1185.       Screen Offset 4,0,FACE_OFFSET
  1186.       Add A,1
  1187.    Until A>FSIZE
  1188.    SCR_FLG=1
  1189. End Proc
  1190. Procedure SCR_TEXT_UP
  1191.    If FACE_OFFSET-2<0 Then Pop Proc
  1192.    A=1
  1193.    Repeat 
  1194.       Add FACE_OFFSET,-1
  1195.       Wait Vbl 
  1196.       Screen Offset 4,0,FACE_OFFSET
  1197.       Add A,1
  1198.    Until A>FSIZE
  1199.    SCR_FLG=1
  1200. End Proc
  1201. Procedure SEARCH[SEARCH$]
  1202.    SCR_FLAG=0 : FLAG=0
  1203.    HILIGHT$=""
  1204.    If SEARCH_FLG=1
  1205.       TEMPER=41
  1206.    Else 
  1207.       TEMPER=1
  1208.    End If 
  1209.    Pack 4 To 16,16+64,16,320-16-64,128
  1210.    OLD_SEARCH$=SEARCH$
  1211.    NOSEARCH=0
  1212.    Reserve As Work 11,64*5 : Rem       Words
  1213.    Reserve As Work 12,2*5 : Rem        Word Lengths
  1214.    Reserve As Work 13,2*200 : Rem      Store 
  1215.    TF=0
  1216.    For A=0 To 4
  1217.       T$=" "+Upper$(T$(A))+" "
  1218.       If(Len(T$) and 1)=1 Then T$=T$+" "
  1219.       ADR=Start(11)+(A*64)
  1220.       For L=1 To Len(T$)
  1221.          Poke(ADR+L-1),Asc(Mid$(T$,L,1))
  1222.       Next L
  1223.       Doke Start(12)+(A*2),Len(T$)
  1224.       If Len(T$)<>2
  1225.          Inc TF
  1226.       End If 
  1227.    Next A
  1228.    Repeat 
  1229.       If SEARCH_FLG<>1
  1230.          TEMP$=Str$(TEMPER)-" "
  1231.       Else 
  1232.          TEMP$=Str$(S_BOOK)-" "
  1233.       End If 
  1234.       If Len(TEMP$)=1
  1235.          TEMP$="0"+TEMP$
  1236.       End If 
  1237.       Open In 7,"Ap:Shakes/Text/"+TEMP$+"/00_00.Inf"
  1238.       XXX=Free : Line Input #7,YY$ : YY$=YY$-Chr$(13) : Close 7
  1239.       If Len(YY$)>32 Then YY$=Mid$(YY$,1,32)
  1240.       SET_FONT[19] : Set Font Param
  1241.       Cls 2,16+64,16 To 320-16-64,128
  1242.       Box 16+64,16 To 319-16-64,127
  1243.       ZZ$="Searching Book"
  1244.       L=Text Length(ZZ$)
  1245.       Text 160-(L/2),60,ZZ$
  1246.       SET_FONT[16] : Set Font Param
  1247.       L=Text Length(YY$)
  1248.       Text 160-(L/2),90,YY$
  1249.       Reserve As Work 10,BUFFER_LEN : Rem Search File  
  1250.       Bload "Ap:Shakes/Text/"+TEMP$+"/Words.Idx",10
  1251.       Timer=0
  1252.       Call 6,Start(10),Length(10),Start(11),Start(12),Start(13)
  1253.       FOUND$="" : S_COUNT=0 : Erase 10
  1254.       If Dreg(0)=0
  1255.          For A=0 To Dreg(1)
  1256.             ADR=Start(13)+(A*4)
  1257.             Z=Deek(ADR)
  1258.             If Z=(TF-1)
  1259.                Z=Deek(ADR+2)
  1260.                Z$=Str$(Z)-" "
  1261.                FOUND$=FOUND$+TEMP$+":"+Z$+" " : Add S_COUNT,1
  1262.             End If 
  1263.          Next A
  1264.          If S_COUNT>0
  1265.             Proc VEIW_AND_DECIDE[FOUND$,S_COUNT]
  1266.             Screen Open 4,320,230,32,Lowres
  1267.             Screen Hide 4 : Screen 4 : Curs Off : Flash Off 
  1268.             If FLAG<>2
  1269.                Screen Copy 3,0,0,320,200 To 4,0,0
  1270.                If SEARCH_FLG=1
  1271.                   Screen Copy 3,2,206,70,206+26 To 4,161,121
  1272.                Else 
  1273.                   Screen Copy 3,73,206,72+70,206+26 To 4,160,121
  1274.                End If 
  1275.                Screen Copy 3,217+(WORD*19),204+5,217+(WORD*19)+18,204+18-2 To 4,280-3,84+12
  1276.                Screen 4
  1277.                Gr Writing 0
  1278.                SET_FONT[12] : Set Font Param
  1279.                Ink 0
  1280.                Text 23,175,T$(WORD)
  1281.                Ink 15
  1282.                Text 21,173,T$(WORD)
  1283.                Get Palette 3 : Get Palette 0,$FFFF0000
  1284.                Screen Display 4,128,35,320,200
  1285.                Screen Show 4
  1286.                Screen To Front 4
  1287.             End If 
  1288.             Add NOSEARCH,1
  1289.          End If 
  1290.       End If 
  1291.       Proc MOUSE_CONVERT
  1292.       Inc TEMPER
  1293.    Until TEMPER>41 or(FLAG>=1) or((M_KEY and 32)=32)
  1294.    If NOSEARCH=0
  1295.       Cls 2,16+64,16 To 320-16-64,128
  1296.       Box 16+64,16 To 319-16-64,127
  1297.       SET_FONT[19] : Set Font Param
  1298.       ZZ$="NOT FOUND"
  1299.       L=Text Length(ZZ$)
  1300.       Text 160-(L/2),50,ZZ$
  1301.       ZZ$="Press A Key"
  1302.       L=Text Length(ZZ$)
  1303.       Text 160-(L/2),85,ZZ$
  1304.       Proc BUTTON_WAIT1
  1305.       SET_FONT[12] : Set Font Param
  1306.    End If 
  1307.    If FLAG<>2 Then Unpack 16
  1308.    Proc BUTTON_WAIT
  1309.    B=FLAG
  1310.    While B=2
  1311.       ACT$=TEMP_ACT$
  1312.       S_WORD=Instr(REENTER_F_WORD$,":")
  1313.       S_BOOK=Val(REENTER_F_WORD1$)
  1314.       Proc FIND_BOOK[S_BOOK]
  1315.       SEL=TEMP_SEL
  1316.       Close 1
  1317.       Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  1318.       Bload DRECTORY$+SEL$(SEL)+".Idx1",9
  1319.       Open In 1,DRECTORY$+SEL$(SEL)
  1320.       ACT$=SEL$(SEL)
  1321.       INDX=TEMP_P
  1322.       B=0
  1323.    Wend 
  1324.    Erase 10 : Erase 11 : Erase 12 : Erase 13
  1325. End Proc[S_SIZE]
  1326. Procedure VEIW_AND_DECIDE[TEMP$,S_COUNT1]
  1327.    TEMP_PIC_FLG=0 : Sprite Off 9 : Screen Close 4
  1328.    Screen 0 : Cls 13,16,21 To 624,21+144-(43*PAL)
  1329.    Screen Open 7,320,48,16,Lowres : Screen Hide 7
  1330.    Screen 7 : Curs Off : Flash Off : Get Palette 3 : Cls 0
  1331.    Screen 7 : Get Palette 0,$FFFF0000
  1332.    Screen Copy 3,145,204,215,232 To 7,0,0
  1333.    Screen Copy 3,145,204,215,232 To 7,125,0
  1334.    Screen Copy 3,145,204,215,232 To 7,250,0
  1335.    Screen Copy 3,0,235,40,248 To 7,15,6
  1336.    Screen Copy 3,42,235,92,248 To 7,125+10,6
  1337.    Screen Copy 3,94,235,94+41,248 To 7,250+16,6
  1338.    Screen Display 7,128,218-(43*PAL),320,48 : Screen Show 7
  1339.    Screen Open 4,640,BACK_SCREEN,4,Hires
  1340.    Screen 4 : Flash Off : Cls 0 : Cls 1,16,0 To 624,BACK_SCREEN : Colour 1,$986 : Colour 2,$FFF : Colour 3,$0
  1341.    Screen Display 4,128,56,320,144-(43*PAL)
  1342.    Screen 0 : Colour 17,$D97 : Screen 4 : Colour 17,$D97 : Screen 7 : Colour 17,$D97
  1343.    Screen To Front 0 : Screen To Front 4 : Screen To Front 7
  1344.    Rem *********************
  1345.    Rem * Reenter Specifics *
  1346.    Rem *********************
  1347.    If REENTER_FLG=1
  1348.       TEMP$=REENTER_TEMP$
  1349.       S_COUNT=REENTER_COUNT
  1350.       S_COUNT1=REENTER_COUNT1
  1351.    Else 
  1352.       S_COUNT=0
  1353.    End If 
  1354.    A=Len(F$)
  1355.    ACT1$=ACT$
  1356.    TITLE1$=TITLE$
  1357.    OLD_FILE_POINTER=-1
  1358.    OLD_SEL=-1
  1359.    Repeat 
  1360.       F_WORD=Instr(TEMP$," ")
  1361.       F_WORD$=Mid$(TEMP$,1,F_WORD-1)
  1362.       REENTER_F_WORD$=F_WORD$
  1363.       TEMP$=Mid$(TEMP$,F_WORD+1,Len(TEMP$))
  1364.       F_WORD1=Instr(F_WORD$,":")
  1365.       F_WORD1$=Mid$(F_WORD$,1,F_WORD1-1)
  1366.       F_WORD$=Mid$(F_WORD$,F_WORD1+1,Len(F_WORD$))
  1367.       FIL$="Ap:Shakes/Text/"+F_WORD1$+"/"
  1368.       While F_WORD<>0
  1369.          A=Val(F_WORD$)
  1370.          TEMP_SEL=(A/256)
  1371.          TEMP_P=A-(TEMP_SEL*256)
  1372.          If TEMP_SEL<>OLD_SEL
  1373.             OLD_SEL=TEMP_SEL
  1374.             OLD_FILE_POINTER=-1
  1375.          End If 
  1376.          Open In 5,FIL$+"00_00.inf"
  1377.          XXX=Free : Line Input #5,TITLE$
  1378.          TITLE$=TITLE$-Chr$(13)
  1379.          Z=0
  1380.          Repeat 
  1381.             XXX=Free : Line Input #5,SEL$
  1382.             Inc Z
  1383.          Until Z=TEMP_SEL
  1384.          SEL$=SEL$-Chr$(13)
  1385.          Close 5
  1386.          ACT$=SEL$
  1387.          Open In 5,FIL$+SEL$
  1388.          Open In 6,FIL$+SEL$+".Idx"
  1389.          Pof(6)=(TEMP_P*9)
  1390.          XXX=Free : Line Input #6,T$ : T=Val(T$)
  1391.          Pof(5)=T
  1392.          Inc S_COUNT
  1393.          While T<>OLD_FILE_POINTER
  1394.             OLD_FILE_POINTER=T
  1395.             TEMP_FILE_POINTER=T
  1396.             Screen 4 : Set Font FO
  1397.             Proc VERSE1
  1398.             Proc ACT_PRINT
  1399.             Screen 0
  1400.             SET_FONT[22] : Set Font Param : Gr Writing 0
  1401.             A$="Word :"+Str$(S_COUNT)+" Of"+Str$(S_COUNT1)
  1402.             Set Text 2 : Ink 0 : Text 45+1,(166+14)-(44*PAL)+1,A$
  1403.             Set Text 0 : Ink 14 : Text 45,(166+14)-(44*PAL),A$
  1404.             FLAG=0
  1405.             B_X=0
  1406.             OLD_M_KEY=0
  1407.             Y_M=Y Hard(7,14)
  1408.             X_M=X Hard(7,40)
  1409.             Sprite 9,X_M-10,Y_M-20+20,1
  1410.             Repeat 
  1411.                Proc MOUSE_CONVERT
  1412.                If(M_KEY and $10)<>0
  1413.                   Sprite 9,X_M-10,Y_M-20+20,2
  1414.                End If 
  1415.                Y_M=Y Hard(7,14)
  1416.                If(M_KEY and 1)=1 Then Proc SCR_TEXT_UP
  1417.                If(M_KEY and 2)=2 Then Proc SCR_TEXT_DOWN
  1418.                MOVE_FLG=0
  1419.                If(M_KEY and 4)=4 and B_X>0
  1420.                   Add B_X,-1 : MOVE_FLG=1
  1421.                End If 
  1422.                If(M_KEY and 8)=8 and B_X<2
  1423.                   Add B_X,1 : MOVE_FLG=1
  1424.                End If 
  1425.                If B_X=0 Then X_M=X Hard(7,40)
  1426.                If B_X=1 Then X_M=X Hard(7,160)
  1427.                If B_X=2 Then X_M=X Hard(7,280)
  1428.                If MOVE_FLG<>0
  1429.                   Sprite 9,X_M-10,Y_M-20+20,1
  1430.                   Wait 10 : Proc MOUSE_CONVERT
  1431.                End If 
  1432.                FLG=0
  1433.                If(M_KEY and $10)<>0 Then FLG=1
  1434.                If(M_KEY and 32)=32 Then FLAG=1 : M_KEY=1 : B_X=3
  1435.                If Key State($43) and(B_X=0)
  1436.                   M_KEY=1
  1437.                   FLAG=3
  1438.                Else 
  1439.                   If B_X<>3
  1440.                      M_KEY=0
  1441.                   End If 
  1442.                End If 
  1443.                If FLG=1 and B_X=0 Then FLG=2 : M_KEY=1
  1444.                If FLG=1 and B_X=1 Then FLAG=1 : M_KEY=1
  1445.                If FLG=1 and B_X=2 Then FLAG=2 : M_KEY=1
  1446.             Until M_KEY<>0
  1447.          Wend 
  1448.          Close 5
  1449.          Close 6
  1450.          F_WORD=0
  1451.       Wend 
  1452.    Until(TEMP$="") or(FLAG<>0)
  1453.    If TEMP$="" and(FLAG<>2) Then SCR_FLG=1
  1454.    If FLAG=2 Then DRECTORY$=FIL$
  1455.    If(FLAG=2) : Rem and(TEMP$<>"") 
  1456.       REENTER_F_WORD$=F_WORD$
  1457.       REENTER_F_WORD1$=F_WORD1$
  1458.       REENTER_TEMP$=TEMP$
  1459.       REENTER_F$=FIL$
  1460.       REENTER_COUNT1=S_COUNT1 : Rem Total Number Of Finds
  1461.       REENTER_COUNT=S_COUNT : Rem   Number Been Through So Far 
  1462.       SCR_FLG=1
  1463.       Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  1464.    Else 
  1465.       REENTER_TEMP$=""
  1466.    End If 
  1467.    PIC_FLG=TEMP_PIC_FLG
  1468.    If FLAG=1 Then SCR_FLG=1
  1469.    TEMP_ACT$=ACT$
  1470.    ACT$=ACT1$
  1471.    TITLE$=TITLE1$
  1472.    Screen Close 7 : Screen Open 4,320,230,32,Lowres
  1473.    Screen Hide 4 : Curs Off : Flash Off 
  1474. End Proc
  1475. Procedure VERSE1
  1476.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  1477.    FACE_OFFSET=0
  1478.    Proc ACT_PRINT
  1479.    Screen 4 : Cls 1,16,0 To 624,BACK_SCREEN
  1480.    Screen Offset 4,0,FACE_OFFSET
  1481.    Gr Writing 0
  1482.    X=30 : Y=5+Text Base
  1483.    FACE_OFFSET=0
  1484.    PAGE_SIZE=Y-Text Base
  1485.    F=1
  1486.    XXX=Free
  1487.    Line Input #5,TEST$ : A=Instr(TEST$,Chr$(9))
  1488.    A1=Instr(TEST$,Chr$(32))
  1489.    If A<>0
  1490.       FACE$=Mid$(TEST$,1,A-1)
  1491.       TEST$=Mid$(TEST$,A+1,Len(TEST$))
  1492.       PROPORTIONAL1[FACE$] : X=X+10
  1493.    Else 
  1494.       If A1=0
  1495.          If FLG_DIR=0
  1496.             Add INDX,-1
  1497.             Pof(1)=Leek(Start(9)+(INDX*4))
  1498.             XXX=Free : Line Input #5,TEST$
  1499.          Else 
  1500.             Add INDX,1
  1501.          End If 
  1502.          XXX=Free : Line Input #5,A$ : TEST$=TEST$+" "+A$+"  "
  1503.       End If 
  1504.    End If 
  1505.    TEST$=TEST$-Chr$(9)
  1506.    PROPORTIONAL1[TEST$]
  1507.    Y=Y+FSIZE : X=30
  1508.    Repeat 
  1509.       Line Input #5,TEST$
  1510.       C=Asc(Mid$(TEST$,1,1))
  1511.       TEST$=TEST$-Chr$(9)
  1512.       If(C=32) or(C=9)
  1513.          PROPORTIONAL1[TEST$]
  1514.          Y=Y+FSIZE : X=30
  1515.       End If 
  1516.    Until((C<>32) and(C<>9) and(C<>13)) or Eof(5) or Y>1023-FSIZE
  1517.    Y=Y+FSIZE
  1518.    PAGE_SIZE=Y-PAGE_SIZE
  1519.    Gr Writing 1
  1520.    'Screen Copy 0,0,SCR_H+1-(43*PAL),640,SCR_H+21-(43*PAL) To 0,0,166-(43*PAL)
  1521.    Wait Vbl 
  1522.    Screen Show 4
  1523. End Proc
  1524. Procedure AN_ERROR
  1525.    Default 
  1526.    Screen 0 : Cls 0
  1527.    Print "Error In Program."
  1528.    Print "Error number :-";Errn
  1529.    Repeat : Until 0
  1530. End Proc
  1531. Procedure PROPORTIONAL1[Z$]
  1532.    Screen 4
  1533.    Z$=Z$+" "
  1534.    Z$=Z$-Chr$(13)
  1535.    Set Font FO
  1536.    PX=0 : B=1 : F=0 : S_LEN=Text Length("  ")
  1537.    If Mid$(Z$,1,1)<>Chr$(32) Then 
  1538.    Repeat 
  1539.       PX=Instr(Z$," ",B)
  1540.       P$=Mid$(Z$,B,(PX-B)+1) : X1=Text Length(P$)
  1541.       If X+X1>625
  1542.          Y=Y+FSIZE : X=40
  1543.       End If 
  1544.       Z=0 : Z_FLG=0
  1545.       Repeat 
  1546.          If Upper$(P$-"?"-"'"-" "-";"-","-"."-":"-"["-"]"-'"')=T$(Z) and(T$(Z)<>"") Then Z_FLG=1
  1547.          Inc Z
  1548.       Until Z>4 or Z_FLG<>0
  1549.       If Z_FLG<>0
  1550.          Set Text 3 : Ink 3 : Text X+1,Y+1,P$
  1551.          Set Text 1 : Ink 2 : Text X,Y,P$
  1552.       Else 
  1553.          Set Text 2 : Ink 3 : Text X+1,Y+1,P$
  1554.          Set Text 0 : Ink 2 : Text X,Y,P$
  1555.       End If 
  1556.       X=Xgr : Y=Ygr : B=PX+1
  1557.    Until B>=Len(Z$)
  1558.    Set Text 0
  1559. End Proc
  1560. Procedure SEARCH_REENTER
  1561.    If REENTER_TEMP$="" Then Pop Proc
  1562.    Load Iff "Ap:Shakes/Graphics/keypad_v2",3
  1563.    Screen Hide 3 : Screen Hide 2 : SCR_FLAG=0
  1564.    REENTER_FLG=1
  1565.    Proc VEIW_AND_DECIDE[REENTER_TEMP$,REENTER_S_COUNT1]
  1566.    Screen Close 3 : Screen Show 2 : Screen Hide 1
  1567.    B=FLAG
  1568.    While B=2
  1569.       ACT$=TEMP_ACT$
  1570.       S_WORD=Instr(REENTER_F_WORD$,":")
  1571.       S_BOOK=Val(REENTER_F_WORD1$)
  1572.       Proc FIND_BOOK[S_BOOK]
  1573.       SEL=TEMP_SEL
  1574.       Close 1
  1575.       Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  1576.       Bload DRECTORY$+SEL$(SEL)+".Idx1",9
  1577.       Open In 1,DRECTORY$+SEL$(SEL)
  1578.       ACT$=SEL$(SEL)
  1579.       INDX=TEMP_P
  1580.       B=0
  1581.    Wend 
  1582.    Screen Open 4,640,BACK_SCREEN,4,Hires
  1583.    Screen Hide 4
  1584.    Screen 4 : Flash Off : Cls 0 : Cls 1,16,0 To 624,BACK_SCREEN : Colour 1,$986 : Colour 2,$FFF : Colour 3,$0
  1585.    Screen Display 4,128,56,320,144-(43*PAL)
  1586.    Screen Show 1 : Screen Show 0
  1587.    Screen 4
  1588.    Set Font FO
  1589.    Proc VERSE
  1590.    Proc ACT_PRINT
  1591. End Proc
  1592. Procedure SET_FONT[Z]
  1593.    A$=Mid$(FO$(Z),1,35)
  1594.    A=1
  1595.    Repeat 
  1596.       B$=Mid$(Font$(A),1,30)+":"+Mid$(Font$(A),30,4)
  1597.       Inc A
  1598.    Until Upper$(A$)=Upper$(B$) or A>50
  1599.    A=A-1
  1600.    If A>=FO_MAX Then A=1
  1601. End Proc[A]
  1602. Procedure SLIDE_SHOW
  1603.    Sprite Off 9
  1604.    Screen Show 1 : SY1=35 : SY2=ICONS_Y
  1605.    Auto View On 
  1606.    Screen To Front 0
  1607.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  1608.    Screen Hide 4
  1609.    Repeat 
  1610.       Wait Vbl 
  1611.       Screen Display 0,,SY1,,
  1612.       Screen Display 2,,SY2,,
  1613.       Add SY1,2 : If SY1>35+200 Then Add SY1,-2
  1614.       Add SY2,-2
  1615.    Until SY2<-40
  1616.    TEMP_FO=FO
  1617.    Screen Display 4,128,SY1,640,144-(43*PAL) : Screen Show 4 : Screen 4
  1618.    TEMP_S_BOOK=S_BOOK
  1619.    FLG_EXIT=0
  1620.    VIRGIN=1
  1621.    BOOK$=Str$(TEMP_S_BOOK)-" " : If Len(BOOK$)=1 Then BOOK$="0"+BOOK$
  1622.    SEL_TEMP=SEL
  1623.    If PIC_FLG=0
  1624.       Z=SEL : FLG=0
  1625.       Repeat 
  1626.          BOOK$=Str$(TEMP_S_BOOK)-" "
  1627.          If Len(BOOK$)=1
  1628.             BOOK$="0"+BOOK$
  1629.          End If 
  1630.          Repeat 
  1631.             If Exist("Ap:Shakes/Pictures/"+BOOK$+"/"+SEL$(Z)+".Iff")
  1632.                FLG=1
  1633.             End If 
  1634.             Add Z,1
  1635.          Until SEL$(Z)="#" or FLG<>0
  1636.          If FLG=0
  1637.             Inc TEMP_S_BOOK
  1638.             If TEMP_S_BOOK>41
  1639.                TEMP_S_BOOK=0
  1640.             End If 
  1641.             BOOK$=Str$(TEMP_S_BOOK)-" "
  1642.             If Len(BOOK$)=1
  1643.                BOOK$="0"+BOOK$
  1644.             End If 
  1645.             Open In 3,"Ap:Shakes/Text/"+BOOK$+"/00_00.INF"
  1646.             Z=0
  1647.             Repeat 
  1648.                XXX=Free : Line Input #3,A$ : A$=A$-Chr$(13)
  1649.                SEL$(Z)=A$
  1650.                Inc Z
  1651.             Until A$="#"
  1652.             Close 3
  1653.          End If 
  1654.          Z=1
  1655.       Until FLG<>0
  1656.    End If 
  1657.    Repeat 
  1658.       TITLE$=SEL$(0)
  1659.       Repeat 
  1660.          FIL$=SEL$(SEL_TEMP)
  1661.          While FIL$<>"#"
  1662.             Screen 1
  1663.             A$="Ap:Shakes/Pictures/"+BOOK$+"/"+FIL$+".Iff"
  1664.             If Exist(A$)
  1665.                Fade 3 : Wait 3*16
  1666.                Load Iff A$,1
  1667.                Screen Display 1,128,35,320,256-(43*PAL)
  1668.                Screen To Back 1 : Screen Show 1
  1669.                Screen Copy 0,0,SCR_H+1-(43*PAL),640,SCR_H+21-(43*PAL) To 0,0,1
  1670.                Screen Copy 0,0,SCR_H+1-(43*PAL),640,SCR_H+21-(43*PAL) To 0,0,166-(43*PAL)
  1671.                Screen 0
  1672.                SET_FONT[22] : Set Font Param : Gr Writing 0
  1673.                L=Text Length(SEL$(0))
  1674.                L=320-(L/2)
  1675.                Set Text 2 : Ink 0 : Text L+1,15+1,SEL$(0)
  1676.                Set Text 0 : Ink 14 : Text L,15,SEL$(0)
  1677.                A1$=Str$(Val(Mid$(SEL$(SEL_TEMP),1,2)))
  1678.                A2$=Str$(Val(Mid$(SEL$(SEL_TEMP),4,2)))
  1679.                If A1$<>"0"
  1680.                   B$="Act "+A1$+" Scene "+A2$
  1681.                Else 
  1682.                   B$=ACT$
  1683.                End If 
  1684.                L=Text Length(B$)
  1685.                L=320-(L/2)
  1686.                Set Text 2 : Ink 0 : Text L+1,166+15-(43*PAL)+1,B$
  1687.                Set Text 0 : Ink 14 : Text L,166+15-(43*PAL),B$
  1688.                Screen 4 : Set Font FO
  1689.                F_STR$=Font$(FO) : FSIZE=Val(Mid$(F_STR$,30,4))
  1690.                Screen Copy 4,0,2,640,144-(43*PAL) To 0,0,23
  1691.                Screen Hide 4
  1692.                Screen Offset 4,0,0
  1693.                Screen 4 : Gr Writing 0 : Cls 1,16,0 To 624,200
  1694.                X=30 : Y=5+Text Base
  1695.                Open In 7,"Ap:Shakes/Text/"+BOOK$+"/"+FIL$
  1696.                XXX=Free : Line Input #7,TEST$
  1697.                PROPORTIONAL[TEST$]
  1698.                Repeat 
  1699.                   XXX=Free : Line Input #7,TEST$
  1700.                   C=Asc(Mid$(TEST$,1,1))
  1701.                   TEST$=TEST$-Chr$(9)
  1702.                   If(C=32) or(C=9)
  1703.                      PROPORTIONAL[TEST$]
  1704.                      Y=Y+FSIZE : X=30
  1705.                   End If 
  1706.                Until((C<>32) and(C<>9)) or Eof(1)
  1707.                Close 7
  1708.                Screen Display 4,128,SY1+21,,
  1709.                Screen Show 4
  1710.                Screen To Front 4
  1711.                Timer=0
  1712.                Repeat 
  1713.                   Proc MOUSE_CONVERT
  1714.                   If M_KEY<>0
  1715.                      Timer=0
  1716.                   End If 
  1717.                   If(M_KEY and 1)=1 and SY1>35+4
  1718.                      Add SY1,-4
  1719.                      If SY1=255
  1720.                         Add SY1,-4
  1721.                      End If 
  1722.                   End If 
  1723.                   If(M_KEY and 2)=2 and SY1<320
  1724.                      Add SY1,4
  1725.                      If SY1=255
  1726.                         Add SY1,4
  1727.                      End If 
  1728.                   End If 
  1729.                   Screen Display 4,128,SY1+21,,
  1730.                   Screen Display 0,128,SY1,,
  1731.                   Wait Vbl 
  1732.                   If(M_KEY and 16+32)<>0
  1733.                      FLG_EXIT=1
  1734.                   End If 
  1735.                   If(M_KEY and 32)
  1736.                      FLG_EXIT=3
  1737.                   End If 
  1738.                Until Timer>250 or FLG_EXIT<>0 or Key State(67)
  1739.                If FLG_EXIT<>3
  1740.                   FLG_EXIT=0
  1741.                End If 
  1742.                If Key State(67)
  1743.                   FLG_EXIT=2
  1744.                End If 
  1745.             End If 
  1746.             FIL$="#"
  1747.          Wend 
  1748.          Inc SEL_TEMP
  1749.          FIL$=SEL$(SEL_TEMP)
  1750.       Until FIL$="#" or FLG_EXIT>=2
  1751.       If FLG_EXIT<2
  1752.          SEL_TEMP=1
  1753.          TEMP_ACT=1
  1754.          Inc TEMP_S_BOOK
  1755.          If TEMP_S_BOOK>41
  1756.             TEMP_S_BOOK=1
  1757.          End If 
  1758.          BOOK$=Str$(TEMP_S_BOOK)-" "
  1759.          If Len(BOOK$)=1
  1760.             BOOK$="0"+BOOK$
  1761.          End If 
  1762.          Open In 3,"Ap:Shakes/Text/"+BOOK$+"/00_00.INF"
  1763.          Z=0
  1764.          Repeat 
  1765.             XXX=Free : Line Input #3,A$ : A$=A$-Chr$(13)
  1766.             SEL$(Z)=A$
  1767.             Inc Z
  1768.          Until A$="#"
  1769.          Close 3 : TITLE$=SEL$(0)
  1770.       End If 
  1771.       Repeat : MOUSE_CONVERT : Until(M_KEY and 32)<>32
  1772.       If TEMP_S_BOOK>41 Then TEMP_S_BOOK=1
  1773.    Until FLG_EXIT<>0
  1774.    Z=FLG_EXIT
  1775.    While Z=2
  1776.       A$=Str$(TEMP_S_BOOK)-" " : If Len(A$)=1 Then A$="0"+A$
  1777.       S_BOOK=TEMP_S_BOOK
  1778.       SEL=SEL_TEMP-1
  1779.       DRECTORY$="Ap:Shakes/Text/"
  1780.       A$=Str$(S_BOOK)-" " : If Len(A$)=1 Then A$="0"+A$
  1781.       DRECTORY$=DRECTORY$+A$+"/" : Close 1
  1782.       Open In 1,DRECTORY$+SEL$(SEL)
  1783.       Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  1784.       Bload DRECTORY$+SEL$(SEL)+".Idx1",9 : INDX=0
  1785.       ACT$=SEL$(SEL)
  1786.       Z=0
  1787.    Wend 
  1788.    Z=FLG_EXIT
  1789.    While Z<>2
  1790.       TEMP_SEL=SEL
  1791.       Close 1 : Proc BOOK_LIST
  1792.       SEL=TEMP_SEL
  1793.       DRECTORY$="Ap:Shakes/Text/"
  1794.       A$=Str$(S_BOOK)-" " : If Len(A$)=1 Then A$="0"+A$
  1795.       DRECTORY$=DRECTORY$+A$+"/" : Open In 1,DRECTORY$+SEL$(SEL)
  1796.       Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  1797.       Bload DRECTORY$+SEL$(SEL)+".Idx1",9 : INDX=0
  1798.       Z=2
  1799.    Wend 
  1800.    Screen Copy 4,0,2,640,144-(43*PAL) To 0,0,23
  1801.    Screen Open 4,640,BACK_SCREEN,4,Hires
  1802.    Screen Display 4,128,56,640,144-(43*PAL)
  1803.    Screen Hide 4
  1804.    Screen 4 : Flash Off : Cls 0 : Cls 1,16,0 To 624,BACK_SCREEN : Colour 1,$986 : Colour 2,$FFF : Colour 3,$0
  1805.    Screen To Back 1
  1806.    FO=TEMP_FO
  1807.    Screen 4 : Set Font FO
  1808.    F_STR$=Font$(FO) : FSIZE=Val(Mid$(F_STR$,30,4))
  1809.    DEMO_FLG=1 : Proc VERSE : DEMO_FLG=0
  1810.    Proc DISPLAY_A_PIC
  1811.    OLD_ACT$=ACT$
  1812.    FACE_OFFSET=0
  1813.    Proc ACT_PRINT
  1814.    Screen To Front 2
  1815.    Screen To Front 4
  1816.    Screen Copy 4,0,FACE_OFFSET+2,640,FACE_OFFSET+144-(43*PAL) To 0,0,23
  1817.    Repeat 
  1818.       Screen Display 0,,SY1,,
  1819.       Screen Display 2,,SY2,,
  1820.       Wait Vbl 
  1821.       Add SY1,-2 : If SY1<35 Then Add SY1,2
  1822.       Add SY2,2 : If SY2>ICONS_Y+2 Then Add SY2,-2
  1823.    Until SY2=ICONS_Y+2 and SY1=35
  1824.    Screen Show 4
  1825. End Proc
  1826. Procedure CHAPTER_VERSE
  1827.    Screen 0
  1828.    Cls 13,16,21 To 624,166-(43*PAL)
  1829.    Screen Hide 2 : Screen Hide 4 : Screen Hide 1
  1830.    FLG_EXIT=0
  1831.    BOOK=S_BOOK
  1832.    CHAPTER=0 : VERSE=0
  1833.    If Instr(ACT$,"_")<>0
  1834.       CHAPTER=Val(Mid$(ACT$,1,Instr(ACT$,"_")-1))
  1835.       VERSE=Val(Mid$(ACT$,Instr(ACT$,"_")+1,Len(ACT$)))
  1836.    End If 
  1837.    A$=Str$(BOOK)-" " : If Len(A$)=1 Then A$="0"+A$
  1838.    FIL$="Ap:Shakes/Text/"+A$+"/00_00.Inf"
  1839.    Open In 7,FIL$ : XXX=Free : Line Input #7,BOOK$ : Close 7
  1840.    SET_FONT[22] : Set Font Param : Set Text 2
  1841.    Ink 0 : Text 100+1,40+1,"Book"
  1842.    Text 390+50+1,40+1,"Act"
  1843.    Text 460+50+1,40+1,"Scene"
  1844.    Set Text 0 : Ink 14 : Text 100,40,"Book"
  1845.    Text 390+50,40,"Act"
  1846.    Text 460+50,40,"Scene"
  1847.    BOOK$=BOOK$-Chr$(13)
  1848.    BOOK_SHOW[BOOK$,Str$(CHAPTER),Str$(VERSE)]
  1849.    CHAP_X=0 : OLD_CHAP_X=0
  1850.    Ink 0 : X=24
  1851.    Box X+1,50+1 To X+380+1,100+1
  1852.    Box X+2,50+1 To X+380+2,100+1
  1853.    Ink 14 : Box X,50 To X+380,100
  1854.    Repeat 
  1855.       Wait 5 : MOUSE_CONVERT
  1856.       If(M_KEY and 32)=32 Then FLG_EXIT=1
  1857.       FLG_MOVE=0
  1858.       If(M_KEY and 4)=4 and CHAP_X>0 Then Add CHAP_X,-1 : FLG_MOVE=1
  1859.       If(M_KEY and 8)=8 and CHAP_X<2 Then Add CHAP_X,1 : FLG_MOVE=1
  1860.       If(M_KEY and 16)=16 Then FLG_EXIT=2
  1861.       While FLG_MOVE=1
  1862.          If OLD_CHAP_X>0
  1863.             Ink 13
  1864.             X=50+395+((OLD_CHAP_X-1)*70)
  1865.             Box X+1,50+1 To X+50+1,100+1
  1866.             Box X+2,50+1 To X+50+2,100+1
  1867.             Box X,50 To X+50,100
  1868.          End If 
  1869.          If OLD_CHAP_X=0
  1870.             Ink 13
  1871.             X=24
  1872.             Box X+1,50+1 To X+380+1,100+1
  1873.             Box X+2,50+1 To X+380+2,100+2
  1874.             Box X,50 To X+380,100
  1875.          End If 
  1876.          If CHAP_X>0
  1877.             Ink 0
  1878.             X=50+395+((CHAP_X-1)*70)
  1879.             Box X+1,50+1 To X+50+1,100+1
  1880.             Box X+2,50+1 To X+50+2,100+1
  1881.             Ink 14 : Box X,50 To X+50,100
  1882.          End If 
  1883.          If CHAP_X=0
  1884.             Ink 0
  1885.             X=24
  1886.             Box X+1,50+1 To X+380+1,100+1
  1887.             Box X+2,50+1 To X+380+2,100+1
  1888.             Ink 14 : Box X,50 To X+380,100
  1889.          End If 
  1890.          FLG_MOVE=0
  1891.       Wend 
  1892.       If(M_KEY and 1)=1 and CHAP_X=0
  1893.          Add BOOK,1
  1894.          If BOOK>41
  1895.             BOOK=0
  1896.          End If 
  1897.          A$=Str$(BOOK)-" "
  1898.          If Len(A$)=1
  1899.             A$="0"+A$
  1900.          End If 
  1901.          FIL$="Ap:Shakes/Text/"+A$+"/00_00.Inf"
  1902.          Open In 7,FIL$ : XXX=Free : Line Input #7,BOOK$ : Close 7
  1903.          BOOK$=BOOK$-Chr$(13)
  1904.          BOOK_SHOW[BOOK$,Str$(CHAPTER),Str$(VERSE)]
  1905.       End If 
  1906.       If(M_KEY and 2)=2 and CHAP_X=0
  1907.          Add BOOK,-1
  1908.          If BOOK<0
  1909.             BOOK=41
  1910.          End If 
  1911.          A$=Str$(BOOK)-" "
  1912.          If Len(A$)=1
  1913.             A$="0"+A$
  1914.          End If 
  1915.          FIL$="Ap:Shakes/Text/"+A$+"/00_00.Inf"
  1916.          Open In 7,FIL$ : XXX=Free : Line Input #7,BOOK$ : Close 7
  1917.          BOOK$=BOOK$-Chr$(13)
  1918.          BOOK_SHOW[BOOK$,Str$(CHAPTER),Str$(VERSE)]
  1919.       End If 
  1920.       If(M_KEY and 1)=1 and CHAP_X=1
  1921.          Add CHAPTER,1
  1922.          If CHAPTER>5
  1923.             CHAPTER=1
  1924.          End If 
  1925.          BOOK_SHOW[BOOK$,Str$(CHAPTER),Str$(VERSE)]
  1926.       End If 
  1927.       If(M_KEY and 2)=2 and CHAP_X=1
  1928.          Add CHAPTER,-1
  1929.          If CHAPTER<1
  1930.             CHAPTER=5
  1931.          End If 
  1932.          BOOK_SHOW[BOOK$,Str$(CHAPTER),Str$(VERSE)]
  1933.       End If 
  1934.       If(M_KEY and 1)=1 and CHAP_X=2
  1935.          Add VERSE,1
  1936.          If VERSE>15
  1937.             VERSE=1
  1938.          End If 
  1939.          BOOK_SHOW[BOOK$,Str$(CHAPTER),Str$(VERSE)]
  1940.       End If 
  1941.       If(M_KEY and 2)=2 and CHAP_X=2
  1942.          Add VERSE,-1
  1943.          If VERSE<1
  1944.             VERSE=15
  1945.          End If 
  1946.          BOOK_SHOW[BOOK$,Str$(CHAPTER),Str$(VERSE)]
  1947.       End If 
  1948.       OLD_CHAP_X=CHAP_X
  1949.    Until FLG_EXIT<>0
  1950.    Proc BUTTON_WAIT
  1951.    Cls 13,16,21 To 624,166-(43*PAL)
  1952.    Screen Show 2 : Screen Show 4 : Screen Show 4
  1953.    If FLG_EXIT=2
  1954.       Close 1
  1955.       S_BOOK=BOOK
  1956.       Proc BOOK_LIST
  1957.       Z=0 : Z1=1
  1958.       CHAP=Val(Mid$(SEL$(Z+Z1),1,2))
  1959.       If CHAP<>0
  1960.          Repeat 
  1961.             Inc Z
  1962.             CHAP=Val(Mid$(SEL$(Z),1,2))
  1963.          Until CHAPTER=CHAP or CHAP=0
  1964.          If CHAP=0
  1965.             Add Z,-1
  1966.          End If 
  1967.          Z1=0
  1968.          Repeat 
  1969.             CHAP1=Val(Mid$(SEL$(Z+Z1),1,2))
  1970.             VER=Val(Mid$(SEL$(Z+Z1),4,2))
  1971.             Inc Z1
  1972.          Until(VERSE=VER) or(VER=0) or(CHAP1<>CHAP)
  1973.          If VER=0 or(CHAP1<>CHAP)
  1974.             Add Z1,-2
  1975.          Else 
  1976.             Add Z1,-1
  1977.          End If 
  1978.       End If 
  1979.       SEL=Z+Z1
  1980.       Screen 0
  1981.       Open In 1,DRECTORY$+SEL$(SEL)
  1982.       Open In 7,DRECTORY$+SEL$(SEL)+".Idx1" : INDX_MAX=(Lof(7)/4)-1 : Close 7
  1983.       Bload DRECTORY$+SEL$(SEL)+".Idx1",9
  1984.       ACT$=SEL$(SEL) : INDX=0
  1985.       Screen 4 : Set Font FO : Set Text 0
  1986.       FACE_OFFSET=0
  1987.       Proc VERSE
  1988.       Proc DISPLAY_A_PIC
  1989.       ACT$=SEL$(SEL)
  1990.       Proc ACT_PRINT
  1991.    End If 
  1992.    Screen Show 1
  1993. End Proc
  1994. Procedure BOOK_SHOW[BOOK$,CHAP$,VERSE$]
  1995.    Ink 0
  1996.    If CHAP_X=0
  1997.       Cls 13,21+4+2,51+1 To 21+4+298+80,99
  1998.    End If 
  1999.    If CHAP_X>0
  2000.       X=50+396+((CHAP_X-1)*70)
  2001.       Cls 13,X+2,51+1 To X+48,99
  2002.    End If 
  2003.    Set Text 2 : Text 30+1,80+1,Mid$(BOOK$,1,29)
  2004.    Text 450+1,80+1,CHAP$
  2005.    Text 520+1,80+1,VERSE$
  2006.    Set Text 0 : Ink 14 : Text 30,80,Mid$(BOOK$,1,29)
  2007.    Text 450,80,CHAP$
  2008.    Text 520,80,VERSE$
  2009. End Proc